//============================================================================
/// \file   IconProvider.cpp
/// \author Uwe Kindler
/// \date   18.10.2019
/// \brief  Implementation of CIconProvider
//============================================================================

//============================================================================
//                                   INCLUDES
//============================================================================
#include "IconProvider.h"
#include <QVector>

namespace ads
{
/**
 * 私有数据类（pimpl）
 */
struct IconProviderPrivate
{
    CIconProvider *_this;
    QVector<QIcon> UserIcons{IconCount, QIcon()};

    /**
     * 私有数据构造函数
     */
    IconProviderPrivate(CIconProvider *_public);
};

// struct LedArrayPanelPrivate

//============================================================================
// IconProviderPrivate类
//============================================================================

// 构造函数
IconProviderPrivate::IconProviderPrivate(CIconProvider *_public) :
	_this(_public)
{
}

//============================================================================
// CIconProvider类
//============================================================================

// 构造函数
CIconProvider::CIconProvider() :
	d(new IconProviderPrivate(this))
{
}

// 析构函数
CIconProvider::~CIconProvider()
{
	delete d;
}

// 获取自定义图标
QIcon CIconProvider::customIcon(eIcon IconId) const
{
	Q_ASSERT(IconId < d->UserIcons.size());
	return d->UserIcons[IconId];
}

// 注册自定义图标
void CIconProvider::registerCustomIcon(eIcon IconId, const QIcon &icon)
{
	Q_ASSERT(IconId < d->UserIcons.size());
	d->UserIcons[IconId] = icon;
}

} // namespace ads




//---------------------------------------------------------------------------
// EOF IconProvider.cpp
